package com.huashi.dealer.commonEntity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.huashi.dealer.core.util.TimeUtil;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 文章分类表
 * 对应数据库表：yoshop_article_category
 * 
 * @author 系统生成
 * @since 2025-01-27
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(description = "文章分类表")
@TableName("yoshop_article_category")
public class ArticleCategory extends BaseModel implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 商品分类id
     */
    @Schema(description = "商品分类id")
    @TableId(value = "category_id", type = IdType.AUTO)
    private Integer categoryId;

    /**
     * 分类名称
     */
    @Schema(description = "分类名称")
    @TableField("name")
    private String name;

    /**
     * 排序方式(数字越小越靠前)
     */
    @Schema(description = "排序方式(数字越小越靠前)")
    @TableField("sort")
    private Integer sort;

    /**
     * 创建时间
     */
    @Schema(description = "创建时间")
    @TableField("create_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Long createTime;

    /**
     * 更新时间
     */
    @Schema(description = "更新时间")
    @TableField("update_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Long updateTime;
    // ==================== 业务方法 ====================

    /**
     * 判断是否为默认分类
     */
    @Schema(description = "是否为默认分类")
    public Boolean isDefaultCategory() {
        return categoryId != null && categoryId == 0;
    }

    /**
     * 获取分类名称（如果为空则返回默认名称）
     */
    @Schema(description = "获取分类名称")
    public String getDisplayName() {
        return name != null && !name.trim().isEmpty() ? name : "未分类";
    }

    /**
     * 格式化创建时间
     */
    @Schema(description = "格式化创建时间")
    public String getCreateTimeStr() {
        if (createTime == null) return "";
        return new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
                .format(new java.util.Date(createTime * 1000L));
    }

    /**
     * 格式化更新时间
     */
    @Schema(description = "格式化更新时间")
    public String getUpdateTimeStr() {
        if (updateTime == null) return "";
        return new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
                .format(new java.util.Date(updateTime * 1000L));
    }

    /**
     * 格式化创建日期（仅日期）
     */
    @Schema(description = "格式化创建日期")
    public String getCreateDateStr() {
        if (createTime == null) return "";
        return new java.text.SimpleDateFormat("yyyy-MM-dd")
                .format(new java.util.Date(createTime * 1000L));
    }

    /**
     * 获取排序描述
     */
    @Schema(description = "排序描述")
    public String getSortDesc() {
        if (sort == null) return "未设置";
        if (sort == 0) return "默认排序";
        return "排序值: " + sort;
    }

    // ==================== 枚举值 ====================

    /**
     * 默认分类ID
     */
    public static final Integer DEFAULT_CATEGORY_ID = 0;

    /**
     * 默认分类名称
     */
    public static final String DEFAULT_CATEGORY_NAME = "未分类";

    /**
     * 默认排序值
     */
    public static final Integer DEFAULT_SORT = 0;
}